import cv2
import os

def extract_frames(video_path, output_folder, interval=1):
    """
    从视频文件中提取帧并保存到指定文件夹。

    :param video_path: 视频文件路径
    :param output_folder: 保存图片的文件夹
    :param interval: 每隔多少帧保存一张图片
    """
    # 确保输出文件夹存在
    os.makedirs(output_folder, exist_ok=True)

    # 打开视频文件
    cap = cv2.VideoCapture(video_path)
    if not cap.isOpened():
        print("无法打开视频文件:", video_path)
        return

    frame_count = 0  # 当前帧计数
    saved_count = 0  # 保存的图片计数

    while True:
        ret, frame = cap.read()
        if not ret:
            break  # 读取结束

        if frame_count % interval == 0:
            save_path = os.path.join(output_folder, f"2025-03-20_17_16_09_{frame_count:06d}.png")
            cv2.imwrite(save_path, frame)
            saved_count += 1
            print(f"保存: {save_path}")

        frame_count += 1

    cap.release()
    print(f"完成！共提取 {saved_count} 张图片。")

# 示例使用
video_file = r"E:\2025-03-20_17_16_09.avi"  # 替换为你的视频文件路径
output_dir = r"E:\2025-03-20_17_16_09"  # 替换为你的保存路径
frame_interval = 3  # 每10帧保存一张

extract_frames(video_file, output_dir, frame_interval)
